package cn.weekdragon.gscore.adapter;

import lombok.Data;
import java.util.List;

@Data
public class GlobalConfig {

    public static GlobalConfig ins;

    private List<ServiceItem> services;
    private List<BotItem> bots;
    private List<RouteItem> routes;


    @Data
    public static class ServiceItem{

        /**
         * 服务名称
         */
        private String name;

        /**
         * 服务通信协议，目前仅支持 gs-core
         */
        private String protocol;

        /**
         *  通信地址，目前可选 反向 ws-reverse
         */
        private String wsReverse;

        /**
         * authorization，连接授权
         */
        private String authorization;

    }

    @Data
    public static class BotItem {

        /**
         * 机器人名称
         */
        private String name;

        /**
         * 所用协议，目前仅支持 red
         */
        private String protocol;

        /**
         *  通信地址，目前可选 反向 ws-reverse
         */
        private String wsReverse;

        /**
         * authorization，连接授权
         */
        private String authorization;

    }

    @Data
    public static class RouteItem {

        /**
         * 消息需要路由到的服务名称，为空则表示全部服务
         */
        private String service;

        /**
         * 需要消息路由的机器人名称，为空表示全部
         */
        private String bot;

        /**
         * 断言，断言成功才会转发，目前支持 前缀断言 Prefix，后缀断言 Suffix，正则断言 Pattern
         */
        private List<String> predicates;

        /**
         * 过滤器，允许针对消息的内容以及来源信息做更改，目前支持 移出前缀 StripPrefix，移除后缀 StripSuffix
         */
        private List<String> filters;

    }


}
